package org.dromara.apartment.domain.vo;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.apartment.domain.LeaseAgreement;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * 租约信息视图对象 lease_agreement
 *
 * @author CKJ
 * @date 2025-07-16
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = LeaseAgreement.class)
public class LeaseAgreementVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 租约id
     */
    @ExcelProperty(value = "租约id")
    private Long id;

    /**
     * 承租人手机号码
     */
    @ExcelProperty(value = "承租人手机号码")
    private String phone;

    /**
     * 承租人姓名
     */
    @ExcelProperty(value = "承租人姓名")
    private String name;

    /**
     * 承租人身份证号码
     */
    @ExcelProperty(value = "承租人身份证号码")
    private String identificationNumber;

    /**
     * 签约公寓id
     */
    @ExcelProperty(value = "签约公寓id")
    private Long apartmentId;

    /**
     * 签约房间id
     */
    @ExcelProperty(value = "签约房间id")
    private Long roomId;

    /**
     * 租约开始日期
     */
    @ExcelProperty(value = "租约开始日期")
    private Date leaseStartDate;

    /**
     * 租约结束日期
     */
    @ExcelProperty(value = "租约结束日期")
    private Date leaseEndDate;

    /**
     * 租期id
     */
    @ExcelProperty(value = "租期id")
    private Long leaseTermId;

    /**
     * 租金（元/月）
     */
    @ExcelProperty(value = "租金", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "元=/月")
    private Integer rent;

    /**
     * 押金（元）
     */
    @ExcelProperty(value = "押金", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "元=")
    private Integer deposit;

    /**
     * 支付类型id

     */
    @ExcelProperty(value = "支付类型")
    private Long paymentTypeId;

    /**
     * 租约状态（1:签约待确认，2:已签约，3:已取消，4:已到期，5:退租待确认，6:已退租，7:续约待确认）
     */
    @ExcelProperty(value = "租约状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "lease_status")
    private Integer status;

    /**
     * 租约来源（1:新签，2:续约）
     */
    @ExcelProperty(value = "租约来源", converter = ExcelDictConvert.class)
    @ExcelDictFormat(dictType = "lease_source_type")
    private Integer sourceType;

    /**
     * 备注信息
     */
    @ExcelProperty(value = "备注信息")
    private String additionalInfo;


}
